Software engineering tends to lag behind the other robotic sciences and in most cases has resulted in robotic applications that are monolithic with highly centralized processing and tight binding to the robotic hardware. Monolithic structure and tight binding to the hardware significantly reduces reuse, application transportability and fail tolerance. Further, unlike PC software applications, to interact with the physical surroundings the robotic application must process numerous sensory inputs simultaneously, make decisions, and coordinate/orchestrate the reaction across potentially multiple actuators. Sensors and actuators could be connected through multiple computational units. Current program structures make it difficult to develop applications for this environment.